<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8" />
    <title>dependency graph</title>
    <style>
      .node:active path,
      .node:hover path,
      .node.current path,
      .node:active polygon,
      .node:hover polygon,
      .node.current polygon
       {
        stroke: fuchsia;
        stroke-width: 2;
      }
      .edge:active path,
      .edge:hover path,
      .edge.current path,
      .edge:active ellipse,
      .edge:hover ellipse,
      .edge.current ellipse {
        stroke: fuchsia;
        stroke-width: 3;
        stroke-opacity: 1;
      }
      .edge:active polygon,
      .edge:hover polygon,
      .edge.current polygon {
        stroke: fuchsia;
        stroke-width: 3;
        fill: fuchsia;
        stroke-opacity: 1;
        fill-opacity: 1;
      }
      .edge:active text,
      .edge:hover text {
        fill: fuchsia;
      }
      .cluster path {
        stroke-width: 3;
      }
      .cluster:active path,
      .cluster:hover path {
        fill: #ffff0011;
      }
    </style>
  </head>
  <body>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.47.1 (20210417.1919)
 -->
<!-- Title: dependency&#45;cruiser output Pages: 1 -->
<svg width="1077pt" height="1008pt"
 viewBox="0.00 0.00 1077.00 1008.38" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1004.38)">
<title>dependency&#45;cruiser output</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-1004.38 1073,-1004.38 1073,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_bin</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M20,-854.38C20,-854.38 66,-854.38 66,-854.38 72,-854.38 78,-860.38 78,-866.38 78,-866.38 78,-894.38 78,-894.38 78,-900.38 72,-906.38 66,-906.38 66,-906.38 20,-906.38 20,-906.38 14,-906.38 8,-900.38 8,-894.38 8,-894.38 8,-866.38 8,-866.38 8,-860.38 14,-854.38 20,-854.38"/>
<text text-anchor="middle" x="43" y="-895.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">bin</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_src</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M102,-32.38C102,-32.38 1049,-32.38 1049,-32.38 1055,-32.38 1061,-38.38 1061,-44.38 1061,-44.38 1061,-980.38 1061,-980.38 1061,-986.38 1055,-992.38 1049,-992.38 1049,-992.38 102,-992.38 102,-992.38 96,-992.38 90,-986.38 90,-980.38 90,-980.38 90,-44.38 90,-44.38 90,-38.38 96,-32.38 102,-32.38"/>
<text text-anchor="middle" x="575.5" y="-981.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">src</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_src/cli</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M110,-824.38C110,-824.38 339,-824.38 339,-824.38 345,-824.38 351,-830.38 351,-836.38 351,-836.38 351,-954.38 351,-954.38 351,-960.38 345,-966.38 339,-966.38 339,-966.38 110,-966.38 110,-966.38 104,-966.38 98,-960.38 98,-954.38 98,-954.38 98,-836.38 98,-836.38 98,-830.38 104,-824.38 110,-824.38"/>
<text text-anchor="middle" x="224.5" y="-955.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">cli</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_src/parse</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M392,-764.38C392,-764.38 783.5,-764.38 783.5,-764.38 789.5,-764.38 795.5,-770.38 795.5,-776.38 795.5,-776.38 795.5,-930.38 795.5,-930.38 795.5,-936.38 789.5,-942.38 783.5,-942.38 783.5,-942.38 392,-942.38 392,-942.38 386,-942.38 380,-936.38 380,-930.38 380,-930.38 380,-776.38 380,-776.38 380,-770.38 386,-764.38 392,-764.38"/>
<text text-anchor="middle" x="587.75" y="-931.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">parse</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_src/parse/scxml</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M538,-772.38C538,-772.38 775.5,-772.38 775.5,-772.38 781.5,-772.38 787.5,-778.38 787.5,-784.38 787.5,-784.38 787.5,-812.38 787.5,-812.38 787.5,-818.38 781.5,-824.38 775.5,-824.38 775.5,-824.38 538,-824.38 538,-824.38 532,-824.38 526,-818.38 526,-812.38 526,-812.38 526,-784.38 526,-784.38 526,-778.38 532,-772.38 538,-772.38"/>
<text text-anchor="middle" x="656.75" y="-813.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">scxml</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_src/parse/smcat</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M525.5,-864.38C525.5,-864.38 596.5,-864.38 596.5,-864.38 602.5,-864.38 608.5,-870.38 608.5,-876.38 608.5,-876.38 608.5,-904.38 608.5,-904.38 608.5,-910.38 602.5,-916.38 596.5,-916.38 596.5,-916.38 525.5,-916.38 525.5,-916.38 519.5,-916.38 513.5,-910.38 513.5,-904.38 513.5,-904.38 513.5,-876.38 513.5,-876.38 513.5,-870.38 519.5,-864.38 525.5,-864.38"/>
<text text-anchor="middle" x="561" y="-905.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat</text>
</g>
<g id="clust7" class="cluster">
<title>cluster_src/render</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M383,-50.38C383,-50.38 1041,-50.38 1041,-50.38 1047,-50.38 1053,-56.38 1053,-62.38 1053,-62.38 1053,-618.38 1053,-618.38 1053,-624.38 1047,-630.38 1041,-630.38 1041,-630.38 383,-630.38 383,-630.38 377,-630.38 371,-624.38 371,-618.38 371,-618.38 371,-62.38 371,-62.38 371,-56.38 377,-50.38 383,-50.38"/>
<text text-anchor="middle" x="712" y="-619.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">render</text>
</g>
<g id="clust8" class="cluster">
<title>cluster_src/render/dot</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M704.5,-298.38C704.5,-298.38 1033,-298.38 1033,-298.38 1039,-298.38 1045,-304.38 1045,-310.38 1045,-310.38 1045,-502.38 1045,-502.38 1045,-508.38 1039,-514.38 1033,-514.38 1033,-514.38 704.5,-514.38 704.5,-514.38 698.5,-514.38 692.5,-508.38 692.5,-502.38 692.5,-502.38 692.5,-310.38 692.5,-310.38 692.5,-304.38 698.5,-298.38 704.5,-298.38"/>
<text text-anchor="middle" x="868.75" y="-503.18" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">dot</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_src/render/scjson</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M704.5,-148.38C704.5,-148.38 943,-148.38 943,-148.38 949,-148.38 955,-154.38 955,-160.38 955,-160.38 955,-218.38 955,-218.38 955,-224.38 949,-230.38 943,-230.38 943,-230.38 704.5,-230.38 704.5,-230.38 698.5,-230.38 692.5,-224.38 692.5,-218.38 692.5,-218.38 692.5,-160.38 692.5,-160.38 692.5,-154.38 698.5,-148.38 704.5,-148.38"/>
<text text-anchor="middle" x="823.75" y="-219.18" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">scjson</text>
</g>
<g id="clust10" class="cluster">
<title>cluster_src/render/scxml</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M538,-58.38C538,-58.38 780,-58.38 780,-58.38 786,-58.38 792,-64.38 792,-70.38 792,-70.38 792,-128.38 792,-128.38 792,-134.38 786,-140.38 780,-140.38 780,-140.38 538,-140.38 538,-140.38 532,-140.38 526,-134.38 526,-128.38 526,-128.38 526,-70.38 526,-70.38 526,-64.38 532,-58.38 538,-58.38"/>
<text text-anchor="middle" x="659" y="-129.18" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">scxml</text>
</g>
<g id="clust11" class="cluster">
<title>cluster_src/render/smcat</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M538,-238.38C538,-238.38 767,-238.38 767,-238.38 773,-238.38 779,-244.38 779,-250.38 779,-250.38 779,-278.38 779,-278.38 779,-284.38 773,-290.38 767,-290.38 767,-290.38 538,-290.38 538,-290.38 532,-290.38 526,-284.38 526,-278.38 526,-278.38 526,-250.38 526,-250.38 526,-244.38 532,-238.38 538,-238.38"/>
<text text-anchor="middle" x="652.5" y="-279.18" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat</text>
</g>
<g id="clust12" class="cluster">
<title>cluster_src/render/vector</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M491,-522.38C491,-522.38 775.5,-522.38 775.5,-522.38 781.5,-522.38 787.5,-528.38 787.5,-534.38 787.5,-534.38 787.5,-592.38 787.5,-592.38 787.5,-598.38 781.5,-604.38 775.5,-604.38 775.5,-604.38 491,-604.38 491,-604.38 485,-604.38 479,-598.38 479,-592.38 479,-592.38 479,-534.38 479,-534.38 479,-528.38 485,-522.38 491,-522.38"/>
<text text-anchor="middle" x="633.25" y="-593.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">vector</text>
</g>
<g id="clust13" class="cluster">
<title>cluster_src/transform</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M535.5,-704.38C535.5,-704.38 750.5,-704.38 750.5,-704.38 756.5,-704.38 762.5,-710.38 762.5,-716.38 762.5,-716.38 762.5,-744.38 762.5,-744.38 762.5,-750.38 756.5,-756.38 750.5,-756.38 750.5,-756.38 535.5,-756.38 535.5,-756.38 529.5,-756.38 523.5,-750.38 523.5,-744.38 523.5,-744.38 523.5,-716.38 523.5,-716.38 523.5,-710.38 529.5,-704.38 535.5,-704.38"/>
<text text-anchor="middle" x="643" y="-745.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">transform</text>
</g>
<!-- bin/smcat -->
<g id="node1" class="node">
<title>bin/smcat</title>
<g id="a_node1"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/bin/smcat" xlink:title="smcat">
<path fill="#ffffcc" stroke="black" d="M64,-880.38C64,-880.38 22,-880.38 22,-880.38 19,-880.38 16,-877.38 16,-874.38 16,-874.38 16,-868.38 16,-868.38 16,-865.38 19,-862.38 22,-862.38 22,-862.38 64,-862.38 64,-862.38 67,-862.38 70,-865.38 70,-868.38 70,-868.38 70,-874.38 70,-874.38 70,-877.38 67,-880.38 64,-880.38"/>
<text text-anchor="middle" x="43" y="-869.17" font-family="Helvetica,sans-Serif" font-size="9.00">smcat</text>
</a>
</g>
</g>
<!-- package.json -->
<g id="node2" class="node">
<title>package.json</title>
<g id="a_node2"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/package.json" xlink:title="package.json">
<path fill="#ffee44" stroke="black" d="M450.5,-22.4C450.5,-23.63 434.59,-24.63 415,-24.63 395.41,-24.63 379.5,-23.63 379.5,-22.4 379.5,-22.4 379.5,-2.35 379.5,-2.35 379.5,-1.12 395.41,-0.12 415,-0.12 434.59,-0.12 450.5,-1.12 450.5,-2.35 450.5,-2.35 450.5,-22.4 450.5,-22.4"/>
<path fill="none" stroke="black" d="M450.5,-22.4C450.5,-21.17 434.59,-20.17 415,-20.17 395.41,-20.17 379.5,-21.17 379.5,-22.4"/>
<text text-anchor="middle" x="415" y="-10.18" font-family="Helvetica,sans-Serif" font-size="9.00">package.json</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;package.json -->
<g id="edge1" class="edge">
<title>bin/smcat&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M34,-862.27C34,-770.02 34,-8.25 34,-8.25 34,-8.25 373.5,-8.25 373.5,-8.25"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="373.5,-10.35 379.5,-8.25 373.5,-6.15 373.5,-10.35"/>
</g>
<!-- src/cli/actions.js -->
<g id="node3" class="node">
<title>src/cli/actions.js</title>
<g id="a_node3"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/actions.js" xlink:title="actions.js">
<path fill="#ccffcc" stroke="black" d="M175.5,-850.38C175.5,-850.38 132.5,-850.38 132.5,-850.38 129.5,-850.38 126.5,-847.38 126.5,-844.38 126.5,-844.38 126.5,-838.38 126.5,-838.38 126.5,-835.38 129.5,-832.38 132.5,-832.38 132.5,-832.38 175.5,-832.38 175.5,-832.38 178.5,-832.38 181.5,-835.38 181.5,-838.38 181.5,-838.38 181.5,-844.38 181.5,-844.38 181.5,-847.38 178.5,-850.38 175.5,-850.38"/>
<text text-anchor="middle" x="154" y="-839.17" font-family="Helvetica,sans-Serif" font-size="9.00">actions.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/actions.js -->
<g id="edge2" class="edge">
<title>bin/smcat&#45;&gt;src/cli/actions.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M52,-862.21C52,-853.39 52,-841.38 52,-841.38 52,-841.38 120.4,-841.38 120.4,-841.38"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="120.4,-843.48 126.4,-841.38 120.4,-839.28 120.4,-843.48"/>
</g>
<!-- src/cli/make&#45;description.js -->
<g id="node4" class="node">
<title>src/cli/make&#45;description.js</title>
<g id="a_node4"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/make-description.js" xlink:title="make&#45;description.js">
<path fill="#ccffcc" stroke="black" d="M196,-940.38C196,-940.38 112,-940.38 112,-940.38 109,-940.38 106,-937.38 106,-934.38 106,-934.38 106,-928.38 106,-928.38 106,-925.38 109,-922.38 112,-922.38 112,-922.38 196,-922.38 196,-922.38 199,-922.38 202,-925.38 202,-928.38 202,-928.38 202,-934.38 202,-934.38 202,-937.38 199,-940.38 196,-940.38"/>
<text text-anchor="middle" x="154" y="-929.17" font-family="Helvetica,sans-Serif" font-size="9.00">make&#45;description.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/make&#45;description.js -->
<g id="edge3" class="edge">
<title>bin/smcat&#45;&gt;src/cli/make&#45;description.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M70.26,-874.38C89.92,-874.38 113,-874.38 113,-874.38 113,-874.38 113,-916.22 113,-916.22"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="110.9,-916.22 113,-922.22 115.1,-916.22 110.9,-916.22"/>
</g>
<!-- src/cli/normalize.js -->
<g id="node5" class="node">
<title>src/cli/normalize.js</title>
<g id="a_node5"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/normalize.js" xlink:title="normalize.js">
<path fill="#ccffcc" stroke="black" d="M181,-910.38C181,-910.38 127,-910.38 127,-910.38 124,-910.38 121,-907.38 121,-904.38 121,-904.38 121,-898.38 121,-898.38 121,-895.38 124,-892.38 127,-892.38 127,-892.38 181,-892.38 181,-892.38 184,-892.38 187,-895.38 187,-898.38 187,-898.38 187,-904.38 187,-904.38 187,-907.38 184,-910.38 181,-910.38"/>
<text text-anchor="middle" x="154" y="-899.17" font-family="Helvetica,sans-Serif" font-size="9.00">normalize.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/normalize.js -->
<g id="edge4" class="edge">
<title>bin/smcat&#45;&gt;src/cli/normalize.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M43,-880.54C43,-889.36 43,-901.38 43,-901.38 43,-901.38 115,-901.38 115,-901.38"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="115,-903.48 121,-901.38 115,-899.28 115,-903.48"/>
</g>
<!-- src/cli/validations.js -->
<g id="node6" class="node">
<title>src/cli/validations.js</title>
<g id="a_node6"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/validations.js" xlink:title="validations.js">
<path fill="#ccffcc" stroke="black" d="M183,-880.38C183,-880.38 125,-880.38 125,-880.38 122,-880.38 119,-877.38 119,-874.38 119,-874.38 119,-868.38 119,-868.38 119,-865.38 122,-862.38 125,-862.38 125,-862.38 183,-862.38 183,-862.38 186,-862.38 189,-865.38 189,-868.38 189,-868.38 189,-874.38 189,-874.38 189,-877.38 186,-880.38 183,-880.38"/>
<text text-anchor="middle" x="154" y="-869.17" font-family="Helvetica,sans-Serif" font-size="9.00">validations.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/validations.js -->
<g id="edge5" class="edge">
<title>bin/smcat&#45;&gt;src/cli/validations.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M70.15,-868.38C70.15,-868.38 112.73,-868.38 112.73,-868.38"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="112.73,-870.48 118.73,-868.38 112.73,-866.28 112.73,-870.48"/>
</g>
<!-- src/index&#45;node.js -->
<g id="node7" class="node">
<title>src/index&#45;node.js</title>
<g id="a_node7"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/index-node.js" xlink:title="index&#45;node.js">
<path fill="#ffffcc" stroke="black" d="M320.5,-798.38C320.5,-798.38 260.5,-798.38 260.5,-798.38 257.5,-798.38 254.5,-795.38 254.5,-792.38 254.5,-792.38 254.5,-786.38 254.5,-786.38 254.5,-783.38 257.5,-780.38 260.5,-780.38 260.5,-780.38 320.5,-780.38 320.5,-780.38 323.5,-780.38 326.5,-783.38 326.5,-786.38 326.5,-786.38 326.5,-792.38 326.5,-792.38 326.5,-795.38 323.5,-798.38 320.5,-798.38"/>
<text text-anchor="middle" x="290.5" y="-787.17" font-family="Helvetica,sans-Serif" font-size="9.00">index&#45;node.js</text>
</a>
</g>
</g>
<!-- src/cli/actions.js&#45;&gt;src/index&#45;node.js -->
<g id="edge6" class="edge">
<title>src/cli/actions.js&#45;&gt;src/index&#45;node.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M154,-832.29C154,-816.67 154,-786.38 154,-786.38 154,-786.38 248.28,-786.38 248.28,-786.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="248.28,-788.48 254.28,-786.38 248.28,-784.28 248.28,-788.48"/>
</g>
<!-- src/cli/file&#45;name&#45;to&#45;stream.js -->
<g id="node8" class="node">
<title>src/cli/file&#45;name&#45;to&#45;stream.js</title>
<g id="a_node8"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/file-name-to-stream.js" xlink:title="file&#45;name&#45;to&#45;stream.js">
<path fill="#ccffcc" stroke="black" d="M337,-910.38C337,-910.38 244,-910.38 244,-910.38 241,-910.38 238,-907.38 238,-904.38 238,-904.38 238,-898.38 238,-898.38 238,-895.38 241,-892.38 244,-892.38 244,-892.38 337,-892.38 337,-892.38 340,-892.38 343,-895.38 343,-898.38 343,-898.38 343,-904.38 343,-904.38 343,-907.38 340,-910.38 337,-910.38"/>
<text text-anchor="middle" x="290.5" y="-899.17" font-family="Helvetica,sans-Serif" font-size="9.00">file&#45;name&#45;to&#45;stream.js</text>
</a>
</g>
</g>
<!-- src/cli/actions.js&#45;&gt;src/cli/file&#45;name&#45;to&#45;stream.js -->
<g id="edge7" class="edge">
<title>src/cli/actions.js&#45;&gt;src/cli/file&#45;name&#45;to&#45;stream.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M181.65,-841.38C209.07,-841.38 247,-841.38 247,-841.38 247,-841.38 247,-886.26 247,-886.26"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="244.9,-886.26 247,-892.26 249.1,-886.26 244.9,-886.26"/>
</g>
<!-- src/cli/attributes&#45;parser.js -->
<g id="node9" class="node">
<title>src/cli/attributes&#45;parser.js</title>
<g id="a_node9"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/attributes-parser.js" xlink:title="attributes&#45;parser.js">
<polygon fill="#ccffcc" stroke="black" points="336.5,-940.38 244.5,-940.38 244.5,-922.38 336.5,-922.38 336.5,-940.38"/>
<text text-anchor="middle" x="290.5" y="-929.17" font-family="Helvetica,sans-Serif" font-size="9.00">attributes&#45;parser.js</text>
</a>
</g>
</g>
<!-- src/cli/normalize.js&#45;&gt;src/cli/attributes&#45;parser.js -->
<g id="edge9" class="edge">
<title>src/cli/normalize.js&#45;&gt;src/cli/attributes&#45;parser.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M187.16,-904.38C201.04,-904.38 214,-904.38 214,-904.38 214,-904.38 214,-934.38 214,-934.38 214,-934.38 238.23,-934.38 238.23,-934.38"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="238.23,-936.48 244.23,-934.38 238.23,-932.28 238.23,-936.48"/>
</g>
<!-- src/options.js -->
<g id="node10" class="node">
<title>src/options.js</title>
<g id="a_node10"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/options.js" xlink:title="options.js">
<path fill="#ffffcc" stroke="black" d="M905.5,-686.38C905.5,-686.38 861.5,-686.38 861.5,-686.38 858.5,-686.38 855.5,-683.38 855.5,-680.38 855.5,-680.38 855.5,-674.38 855.5,-674.38 855.5,-671.38 858.5,-668.38 861.5,-668.38 861.5,-668.38 905.5,-668.38 905.5,-668.38 908.5,-668.38 911.5,-671.38 911.5,-674.38 911.5,-674.38 911.5,-680.38 911.5,-680.38 911.5,-683.38 908.5,-686.38 905.5,-686.38"/>
<text text-anchor="middle" x="883.5" y="-675.17" font-family="Helvetica,sans-Serif" font-size="9.00">options.js</text>
</a>
</g>
</g>
<!-- src/cli/normalize.js&#45;&gt;src/options.js -->
<g id="edge8" class="edge">
<title>src/cli/normalize.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M187.09,-898.38C192.3,-898.38 196,-898.38 196,-898.38 196,-898.38 196,-679.62 196,-679.62 196,-679.62 849.27,-679.62 849.27,-679.62"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="849.27,-681.73 855.27,-679.62 849.27,-677.53 849.27,-681.73"/>
</g>
<!-- src/cli/validations.js&#45;&gt;src/index&#45;node.js -->
<g id="edge10" class="edge">
<title>src/cli/validations.js&#45;&gt;src/index&#45;node.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M186,-862.31C186,-841.56 186,-792.38 186,-792.38 186,-792.38 248.24,-792.38 248.24,-792.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="248.24,-794.48 254.24,-792.38 248.24,-790.28 248.24,-794.48"/>
</g>
<!-- src/cli/validations.js&#45;&gt;src/cli/attributes&#45;parser.js -->
<g id="edge11" class="edge">
<title>src/cli/validations.js&#45;&gt;src/cli/attributes&#45;parser.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M189.16,-877.71C207.43,-877.71 226,-877.71 226,-877.71 226,-877.71 226,-928.38 226,-928.38 226,-928.38 238.31,-928.38 238.31,-928.38"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="238.31,-930.48 244.31,-928.38 238.31,-926.28 238.31,-930.48"/>
</g>
<!-- src/index&#45;node.js&#45;&gt;package.json -->
<g id="edge12" class="edge">
<title>src/index&#45;node.js&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M320,-780.16C320,-692.96 320,-16.5 320,-16.5 320,-16.5 373.36,-16.5 373.36,-16.5"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="373.36,-18.6 379.36,-16.5 373.36,-14.4 373.36,-18.6"/>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/options.js -->
<g id="edge13" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M323,-780.21C323,-754.21 323,-681.88 323,-681.88 323,-681.88 849.32,-681.88 849.32,-681.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="849.32,-683.98 855.32,-681.88 849.32,-679.78 849.32,-683.98"/>
</g>
<!-- src/parse/index.js -->
<g id="node11" class="node">
<title>src/parse/index.js</title>
<g id="a_node11"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/index.js" xlink:title="index.js">
<path fill="#ffccff" stroke="black" d="M436,-798.38C436,-798.38 394,-798.38 394,-798.38 391,-798.38 388,-795.38 388,-792.38 388,-792.38 388,-786.38 388,-786.38 388,-783.38 391,-780.38 394,-780.38 394,-780.38 436,-780.38 436,-780.38 439,-780.38 442,-783.38 442,-786.38 442,-786.38 442,-792.38 442,-792.38 442,-795.38 439,-798.38 436,-798.38"/>
<text text-anchor="middle" x="415" y="-787.17" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/parse/index.js -->
<g id="edge14" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/parse/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M326.51,-792.38C326.51,-792.38 381.77,-792.38 381.77,-792.38"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="381.77,-794.48 387.77,-792.38 381.77,-790.28 381.77,-794.48"/>
</g>
<!-- src/render/index&#45;node.js -->
<g id="node12" class="node">
<title>src/render/index&#45;node.js</title>
<g id="a_node12"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/index-node.js" xlink:title="index&#45;node.js">
<path fill="#ccccff" stroke="black" d="M445,-443.38C445,-443.38 385,-443.38 385,-443.38 382,-443.38 379,-440.38 379,-437.38 379,-437.38 379,-431.38 379,-431.38 379,-428.38 382,-425.38 385,-425.38 385,-425.38 445,-425.38 445,-425.38 448,-425.38 451,-428.38 451,-431.38 451,-431.38 451,-437.38 451,-437.38 451,-440.38 448,-443.38 445,-443.38"/>
<text text-anchor="middle" x="415" y="-432.18" font-family="Helvetica,sans-Serif" font-size="9.00">index&#45;node.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/render/index&#45;node.js -->
<g id="edge15" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/render/index&#45;node.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M322,-780.24C322,-724.68 322,-434.38 322,-434.38 322,-434.38 372.78,-434.38 372.78,-434.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="372.78,-436.48 378.78,-434.38 372.78,-432.28 372.78,-436.48"/>
</g>
<!-- src/transform/desugar.js -->
<g id="node13" class="node">
<title>src/transform/desugar.js</title>
<g id="a_node13"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/transform/desugar.js" xlink:title="desugar.js">
<path fill="#ffffcc" stroke="black" d="M584.5,-730.38C584.5,-730.38 537.5,-730.38 537.5,-730.38 534.5,-730.38 531.5,-727.38 531.5,-724.38 531.5,-724.38 531.5,-718.38 531.5,-718.38 531.5,-715.38 534.5,-712.38 537.5,-712.38 537.5,-712.38 584.5,-712.38 584.5,-712.38 587.5,-712.38 590.5,-715.38 590.5,-718.38 590.5,-718.38 590.5,-724.38 590.5,-724.38 590.5,-727.38 587.5,-730.38 584.5,-730.38"/>
<text text-anchor="middle" x="561" y="-719.17" font-family="Helvetica,sans-Serif" font-size="9.00">desugar.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/transform/desugar.js -->
<g id="edge16" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/transform/desugar.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M325,-780.34C325,-762.48 325,-724.38 325,-724.38 325,-724.38 525.11,-724.38 525.11,-724.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="525.11,-726.48 531.11,-724.38 525.11,-722.28 525.11,-726.48"/>
</g>
<!-- src/parse/index.js&#45;&gt;src/options.js -->
<g id="edge22" class="edge">
<title>src/parse/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M415,-780.03C415,-754.28 415,-684.12 415,-684.12 415,-684.12 849.25,-684.12 849.25,-684.12"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="849.25,-686.23 855.25,-684.12 849.25,-682.03 849.25,-686.23"/>
</g>
<!-- src/parse/scxml/index.js -->
<g id="node16" class="node">
<title>src/parse/scxml/index.js</title>
<g id="a_node16"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/scxml/index.js" xlink:title="index.js">
<path fill="#ffccff" stroke="black" d="M582,-798.38C582,-798.38 540,-798.38 540,-798.38 537,-798.38 534,-795.38 534,-792.38 534,-792.38 534,-786.38 534,-786.38 534,-783.38 537,-780.38 540,-780.38 540,-780.38 582,-780.38 582,-780.38 585,-780.38 588,-783.38 588,-786.38 588,-786.38 588,-792.38 588,-792.38 588,-795.38 585,-798.38 582,-798.38"/>
<text text-anchor="middle" x="561" y="-787.17" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/scxml/index.js -->
<g id="edge23" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/scxml/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M442.12,-786.38C442.12,-786.38 527.53,-786.38 527.53,-786.38"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="527.53,-788.48 533.53,-786.38 527.53,-784.28 527.53,-788.48"/>
</g>
<!-- src/parse/smcat&#45;ast.schema.json -->
<g id="node17" class="node">
<title>src/parse/smcat&#45;ast.schema.json</title>
<g id="a_node17"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/smcat-ast.schema.json" xlink:title="smcat&#45;ast.schema.json">
<path fill="#ffccff" stroke="black" d="M616,-854.4C616,-855.63 591.35,-856.63 561,-856.63 530.65,-856.63 506,-855.63 506,-854.4 506,-854.4 506,-834.35 506,-834.35 506,-833.12 530.65,-832.12 561,-832.12 591.35,-832.12 616,-833.12 616,-834.35 616,-834.35 616,-854.4 616,-854.4"/>
<path fill="none" stroke="black" d="M616,-854.4C616,-853.17 591.35,-852.17 561,-852.17 530.65,-852.17 506,-853.17 506,-854.4"/>
<text text-anchor="middle" x="561" y="-842.17" font-family="Helvetica,sans-Serif" font-size="9.00">smcat&#45;ast.schema.json</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/smcat&#45;ast.schema.json -->
<g id="edge24" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/smcat&#45;ast.schema.json</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M442.05,-792.38C472.87,-792.38 519,-792.38 519,-792.38 519,-792.38 519,-826.58 519,-826.58"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="516.9,-826.58 519,-832.58 521.1,-826.58 516.9,-826.58"/>
</g>
<!-- src/parse/smcat/smcat&#45;parser.js -->
<g id="node18" class="node">
<title>src/parse/smcat/smcat&#45;parser.js</title>
<g id="a_node18"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/smcat/smcat-parser.js" xlink:title="smcat&#45;parser.js">
<polygon fill="#ffccff" stroke="black" points="600.5,-890.38 521.5,-890.38 521.5,-872.38 600.5,-872.38 600.5,-890.38"/>
<text text-anchor="middle" x="561" y="-879.17" font-family="Helvetica,sans-Serif" font-size="9.00">smcat&#45;parser.js</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/smcat/smcat&#45;parser.js -->
<g id="edge25" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/smcat/smcat&#45;parser.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M415,-798.54C415,-820.64 415,-875.04 415,-875.04 415,-875.04 515.49,-875.04 515.49,-875.04"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="515.49,-877.14 521.49,-875.04 515.49,-872.94 515.49,-877.14"/>
</g>
<!-- src/render/dot/index.js -->
<g id="node27" class="node">
<title>src/render/dot/index.js</title>
<g id="a_node27"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/index.js" xlink:title="index.js">
<path fill="#ccccff" stroke="black" d="M748.5,-443.38C748.5,-443.38 706.5,-443.38 706.5,-443.38 703.5,-443.38 700.5,-440.38 700.5,-437.38 700.5,-437.38 700.5,-431.38 700.5,-431.38 700.5,-428.38 703.5,-425.38 706.5,-425.38 706.5,-425.38 748.5,-425.38 748.5,-425.38 751.5,-425.38 754.5,-428.38 754.5,-431.38 754.5,-431.38 754.5,-437.38 754.5,-437.38 754.5,-440.38 751.5,-443.38 748.5,-443.38"/>
<text text-anchor="middle" x="727.5" y="-432.18" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/dot/index.js -->
<g id="edge42" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M451.15,-432.57C451.15,-432.57 694.32,-432.57 694.32,-432.57"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="694.32,-434.68 700.32,-432.57 694.32,-430.48 694.32,-434.68"/>
</g>
<!-- src/render/scjson/index.js -->
<g id="node31" class="node">
<title>src/render/scjson/index.js</title>
<g id="a_node31"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scjson/index.js" xlink:title="index.js">
<path fill="#ccccff" stroke="black" d="M748.5,-204.38C748.5,-204.38 706.5,-204.38 706.5,-204.38 703.5,-204.38 700.5,-201.38 700.5,-198.38 700.5,-198.38 700.5,-192.38 700.5,-192.38 700.5,-189.38 703.5,-186.38 706.5,-186.38 706.5,-186.38 748.5,-186.38 748.5,-186.38 751.5,-186.38 754.5,-189.38 754.5,-192.38 754.5,-192.38 754.5,-198.38 754.5,-198.38 754.5,-201.38 751.5,-204.38 748.5,-204.38"/>
<text text-anchor="middle" x="727.5" y="-193.18" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/scjson/index.js -->
<g id="edge43" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/scjson/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M447,-425.18C447,-381.83 447,-199.88 447,-199.88 447,-199.88 694.35,-199.88 694.35,-199.88"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="694.35,-201.98 700.35,-199.88 694.35,-197.78 694.35,-201.98"/>
</g>
<!-- src/render/scxml/index.js -->
<g id="node32" class="node">
<title>src/render/scxml/index.js</title>
<g id="a_node32"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scxml/index.js" xlink:title="index.js">
<path fill="#ccccff" stroke="black" d="M582,-114.38C582,-114.38 540,-114.38 540,-114.38 537,-114.38 534,-111.38 534,-108.38 534,-108.38 534,-102.38 534,-102.38 534,-99.38 537,-96.38 540,-96.38 540,-96.38 582,-96.38 582,-96.38 585,-96.38 588,-99.38 588,-102.38 588,-102.38 588,-108.38 588,-108.38 588,-111.38 585,-114.38 582,-114.38"/>
<text text-anchor="middle" x="561" y="-103.17" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/scxml/index.js -->
<g id="edge44" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/scxml/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M445,-425.32C445,-372.66 445,-108.38 445,-108.38 445,-108.38 527.8,-108.38 527.8,-108.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="527.8,-110.48 533.8,-108.38 527.8,-106.28 527.8,-110.48"/>
</g>
<!-- src/render/smcat/index.js -->
<g id="node33" class="node">
<title>src/render/smcat/index.js</title>
<g id="a_node33"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/smcat/index.js" xlink:title="index.js">
<path fill="#ccccff" stroke="black" d="M582,-264.38C582,-264.38 540,-264.38 540,-264.38 537,-264.38 534,-261.38 534,-258.38 534,-258.38 534,-252.38 534,-252.38 534,-249.38 537,-246.38 540,-246.38 540,-246.38 582,-246.38 582,-246.38 585,-246.38 588,-249.38 588,-252.38 588,-252.38 588,-258.38 588,-258.38 588,-261.38 585,-264.38 582,-264.38"/>
<text text-anchor="middle" x="561" y="-253.18" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/smcat/index.js -->
<g id="edge45" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/smcat/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M449,-425.04C449,-388.98 449,-260.77 449,-260.77 449,-260.77 527.89,-260.77 527.89,-260.77"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="527.89,-262.88 533.89,-260.77 527.89,-258.68 527.89,-262.88"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js -->
<g id="node34" class="node">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js</title>
<g id="a_node34"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/vector/vector-native-dot-with-fallback.js" xlink:title="vector&#45;native&#45;dot&#45;with&#45;fallback.js">
<path fill="#ccccff" stroke="black" d="M629,-578.38C629,-578.38 493,-578.38 493,-578.38 490,-578.38 487,-575.38 487,-572.38 487,-572.38 487,-566.38 487,-566.38 487,-563.38 490,-560.38 493,-560.38 493,-560.38 629,-560.38 629,-560.38 632,-560.38 635,-563.38 635,-566.38 635,-566.38 635,-572.38 635,-572.38 635,-575.38 632,-578.38 629,-578.38"/>
<text text-anchor="middle" x="561" y="-567.17" font-family="Helvetica,sans-Serif" font-size="9.00">vector&#45;native&#45;dot&#45;with&#45;fallback.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js -->
<g id="edge46" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M445,-443.65C445,-474.15 445,-569.38 445,-569.38 445,-569.38 480.88,-569.38 480.88,-569.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="480.88,-571.48 486.88,-569.38 480.88,-567.28 480.88,-571.48"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;viz&#45;js.js -->
<g id="node35" class="node">
<title>src/render/vector/vector&#45;with&#45;viz&#45;js.js</title>
<g id="a_node35"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/vector/vector-with-viz-js.js" xlink:title="vector&#45;with&#45;viz&#45;js.js">
<path fill="#ccccff" stroke="black" d="M602,-548.38C602,-548.38 520,-548.38 520,-548.38 517,-548.38 514,-545.38 514,-542.38 514,-542.38 514,-536.38 514,-536.38 514,-533.38 517,-530.38 520,-530.38 520,-530.38 602,-530.38 602,-530.38 605,-530.38 608,-533.38 608,-536.38 608,-536.38 608,-542.38 608,-542.38 608,-545.38 605,-548.38 602,-548.38"/>
<text text-anchor="middle" x="561" y="-537.17" font-family="Helvetica,sans-Serif" font-size="9.00">vector&#45;with&#45;viz&#45;js.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js -->
<g id="edge47" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M448,-443.69C448,-469.39 448,-539.38 448,-539.38 448,-539.38 507.73,-539.38 507.73,-539.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="507.73,-541.48 513.73,-539.38 507.73,-537.28 507.73,-541.48"/>
</g>
<!-- src/state&#45;machine&#45;model.js -->
<g id="node20" class="node">
<title>src/state&#45;machine&#45;model.js</title>
<g id="a_node20"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/state-machine-model.js" xlink:title="state&#45;machine&#45;model.js">
<path fill="#ffffcc" stroke="black" d="M933.5,-656.38C933.5,-656.38 833.5,-656.38 833.5,-656.38 830.5,-656.38 827.5,-653.38 827.5,-650.38 827.5,-650.38 827.5,-644.38 827.5,-644.38 827.5,-641.38 830.5,-638.38 833.5,-638.38 833.5,-638.38 933.5,-638.38 933.5,-638.38 936.5,-638.38 939.5,-641.38 939.5,-644.38 939.5,-644.38 939.5,-650.38 939.5,-650.38 939.5,-653.38 936.5,-656.38 933.5,-656.38"/>
<text text-anchor="middle" x="883.5" y="-645.17" font-family="Helvetica,sans-Serif" font-size="9.00">state&#45;machine&#45;model.js</text>
</a>
</g>
</g>
<!-- src/transform/desugar.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge65" class="edge">
<title>src/transform/desugar.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M561,-712.29C561,-693.45 561,-651.88 561,-651.88 561,-651.88 821.32,-651.88 821.32,-651.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="821.32,-653.98 827.32,-651.88 821.32,-649.78 821.32,-653.98"/>
</g>
<!-- src/transform/utl.js -->
<g id="node21" class="node">
<title>src/transform/utl.js</title>
<g id="a_node21"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/transform/utl.js" xlink:title="utl.js">
<path fill="#ffffcc" stroke="black" d="M748.5,-730.38C748.5,-730.38 706.5,-730.38 706.5,-730.38 703.5,-730.38 700.5,-727.38 700.5,-724.38 700.5,-724.38 700.5,-718.38 700.5,-718.38 700.5,-715.38 703.5,-712.38 706.5,-712.38 706.5,-712.38 748.5,-712.38 748.5,-712.38 751.5,-712.38 754.5,-715.38 754.5,-718.38 754.5,-718.38 754.5,-724.38 754.5,-724.38 754.5,-727.38 751.5,-730.38 748.5,-730.38"/>
<text text-anchor="middle" x="727.5" y="-719.17" font-family="Helvetica,sans-Serif" font-size="9.00">utl.js</text>
</a>
</g>
</g>
<!-- src/transform/desugar.js&#45;&gt;src/transform/utl.js -->
<g id="edge66" class="edge">
<title>src/transform/desugar.js&#45;&gt;src/transform/utl.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M590.77,-718.38C590.77,-718.38 694.47,-718.38 694.47,-718.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="694.47,-720.48 700.47,-718.38 694.47,-716.28 694.47,-720.48"/>
</g>
<!-- src/index.js -->
<g id="node14" class="node">
<title>src/index.js</title>
<g id="a_node14"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/index.js" xlink:title="index.js">
<path fill="#ffffcc" stroke="black" d="M311.5,-264.38C311.5,-264.38 269.5,-264.38 269.5,-264.38 266.5,-264.38 263.5,-261.38 263.5,-258.38 263.5,-258.38 263.5,-252.38 263.5,-252.38 263.5,-249.38 266.5,-246.38 269.5,-246.38 269.5,-246.38 311.5,-246.38 311.5,-246.38 314.5,-246.38 317.5,-249.38 317.5,-252.38 317.5,-252.38 317.5,-258.38 317.5,-258.38 317.5,-261.38 314.5,-264.38 311.5,-264.38"/>
<text text-anchor="middle" x="290.5" y="-253.18" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index.js&#45;&gt;package.json -->
<g id="edge17" class="edge">
<title>src/index.js&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M317.54,-250.88C345.16,-250.88 384,-250.88 384,-250.88 384,-250.88 384,-30.2 384,-30.2"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="386.1,-30.2 384,-24.2 381.9,-30.2 386.1,-30.2"/>
</g>
<!-- src/index.js&#45;&gt;src/options.js -->
<g id="edge18" class="edge">
<title>src/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M300,-264.58C300,-326.29 300,-677.38 300,-677.38 300,-677.38 849.36,-677.38 849.36,-677.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="849.36,-679.48 855.36,-677.38 849.36,-675.28 849.36,-679.48"/>
</g>
<!-- src/index.js&#45;&gt;src/parse/index.js -->
<g id="edge19" class="edge">
<title>src/index.js&#45;&gt;src/parse/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M317.67,-259.88C326.93,-259.88 335,-259.88 335,-259.88 335,-259.88 335,-786.38 335,-786.38 335,-786.38 381.92,-786.38 381.92,-786.38"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="381.92,-788.48 387.92,-786.38 381.92,-784.28 381.92,-788.48"/>
</g>
<!-- src/index.js&#45;&gt;src/transform/desugar.js -->
<g id="edge21" class="edge">
<title>src/index.js&#45;&gt;src/transform/desugar.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M282,-264.62C282,-329.88 282,-718.38 282,-718.38 282,-718.38 525.41,-718.38 525.41,-718.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="525.41,-720.48 531.41,-718.38 525.41,-716.28 525.41,-720.48"/>
</g>
<!-- src/render/index.js -->
<g id="node15" class="node">
<title>src/render/index.js</title>
<g id="a_node15"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/index.js" xlink:title="index.js">
<path fill="#ccccff" stroke="black" d="M436,-264.38C436,-264.38 394,-264.38 394,-264.38 391,-264.38 388,-261.38 388,-258.38 388,-258.38 388,-252.38 388,-252.38 388,-249.38 391,-246.38 394,-246.38 394,-246.38 436,-246.38 436,-246.38 439,-246.38 442,-249.38 442,-252.38 442,-252.38 442,-258.38 442,-258.38 442,-261.38 439,-264.38 436,-264.38"/>
<text text-anchor="middle" x="415" y="-253.18" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index.js&#45;&gt;src/render/index.js -->
<g id="edge20" class="edge">
<title>src/index.js&#45;&gt;src/render/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M317.51,-255.38C317.51,-255.38 381.61,-255.38 381.61,-255.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="381.61,-257.48 387.61,-255.38 381.61,-253.28 381.61,-257.48"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/dot/index.js -->
<g id="edge48" class="edge">
<title>src/render/index.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M442.21,-257.18C467.41,-257.18 501,-257.18 501,-257.18 501,-257.18 501,-428.98 501,-428.98 501,-428.98 694.18,-428.98 694.18,-428.98"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="694.18,-431.08 700.18,-428.98 694.18,-426.88 694.18,-431.08"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/scjson/index.js -->
<g id="edge49" class="edge">
<title>src/render/index.js&#45;&gt;src/render/scjson/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M424,-246.26C424,-229.48 424,-195.38 424,-195.38 424,-195.38 694.3,-195.38 694.3,-195.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="694.3,-197.48 700.3,-195.38 694.3,-193.28 694.3,-197.48"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/scxml/index.js -->
<g id="edge50" class="edge">
<title>src/render/index.js&#45;&gt;src/render/scxml/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M406,-246.26C406,-213.32 406,-102.38 406,-102.38 406,-102.38 527.65,-102.38 527.65,-102.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="527.65,-104.48 533.65,-102.38 527.65,-100.28 527.65,-104.48"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/smcat/index.js -->
<g id="edge51" class="edge">
<title>src/render/index.js&#45;&gt;src/render/smcat/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M442.12,-249.97C442.12,-249.97 527.53,-249.97 527.53,-249.97"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="527.53,-252.08 533.53,-249.97 527.53,-247.88 527.53,-252.08"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js -->
<g id="edge52" class="edge">
<title>src/render/index.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M442.22,-253.57C474.51,-253.57 524,-253.57 524,-253.57 524,-253.57 524,-524.19 524,-524.19"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="521.9,-524.19 524,-530.19 526.1,-524.19 521.9,-524.19"/>
</g>
<!-- src/parse/parser&#45;helpers.js -->
<g id="node19" class="node">
<title>src/parse/parser&#45;helpers.js</title>
<g id="a_node19"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/parser-helpers.js" xlink:title="parser&#45;helpers.js">
<path fill="#ffccff" stroke="black" d="M764.5,-850.38C764.5,-850.38 690.5,-850.38 690.5,-850.38 687.5,-850.38 684.5,-847.38 684.5,-844.38 684.5,-844.38 684.5,-838.38 684.5,-838.38 684.5,-835.38 687.5,-832.38 690.5,-832.38 690.5,-832.38 764.5,-832.38 764.5,-832.38 767.5,-832.38 770.5,-835.38 770.5,-838.38 770.5,-838.38 770.5,-844.38 770.5,-844.38 770.5,-847.38 767.5,-850.38 764.5,-850.38"/>
<text text-anchor="middle" x="727.5" y="-839.17" font-family="Helvetica,sans-Serif" font-size="9.00">parser&#45;helpers.js</text>
</a>
</g>
</g>
<!-- src/parse/scxml/index.js&#45;&gt;src/parse/parser&#45;helpers.js -->
<g id="edge28" class="edge">
<title>src/parse/scxml/index.js&#45;&gt;src/parse/parser&#45;helpers.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M588.27,-793.88C607.18,-793.88 629,-793.88 629,-793.88 629,-793.88 629,-841.38 629,-841.38 629,-841.38 678.3,-841.38 678.3,-841.38"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="678.3,-843.48 684.3,-841.38 678.3,-839.28 678.3,-843.48"/>
</g>
<!-- src/parse/scxml/index.js&#45;&gt;src/transform/utl.js -->
<g id="edge27" class="edge">
<title>src/parse/scxml/index.js&#45;&gt;src/transform/utl.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M588.48,-784.88C596.9,-784.88 604,-784.88 604,-784.88 604,-784.88 604,-724.38 604,-724.38 604,-724.38 694.4,-724.38 694.4,-724.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="694.4,-726.48 700.4,-724.38 694.4,-722.28 694.4,-726.48"/>
</g>
<!-- src/parse/scxml/normalize&#45;machine.js -->
<g id="node22" class="node">
<title>src/parse/scxml/normalize&#45;machine.js</title>
<g id="a_node22"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/scxml/normalize-machine.js" xlink:title="normalize&#45;machine.js">
<path fill="#ffccff" stroke="black" d="M773.5,-798.38C773.5,-798.38 681.5,-798.38 681.5,-798.38 678.5,-798.38 675.5,-795.38 675.5,-792.38 675.5,-792.38 675.5,-786.38 675.5,-786.38 675.5,-783.38 678.5,-780.38 681.5,-780.38 681.5,-780.38 773.5,-780.38 773.5,-780.38 776.5,-780.38 779.5,-783.38 779.5,-786.38 779.5,-786.38 779.5,-792.38 779.5,-792.38 779.5,-795.38 776.5,-798.38 773.5,-798.38"/>
<text text-anchor="middle" x="727.5" y="-787.17" font-family="Helvetica,sans-Serif" font-size="9.00">normalize&#45;machine.js</text>
</a>
</g>
</g>
<!-- src/parse/scxml/index.js&#45;&gt;src/parse/scxml/normalize&#45;machine.js -->
<g id="edge29" class="edge">
<title>src/parse/scxml/index.js&#45;&gt;src/parse/scxml/normalize&#45;machine.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M588.12,-789.38C588.12,-789.38 669.16,-789.38 669.16,-789.38"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="669.16,-791.48 675.16,-789.38 669.16,-787.28 669.16,-791.48"/>
</g>
<!-- src/parse/smcat/smcat&#45;parser.js&#45;&gt;src/parse/parser&#45;helpers.js -->
<g id="edge30" class="edge">
<title>src/parse/smcat/smcat&#45;parser.js&#45;&gt;src/parse/parser&#45;helpers.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M600.58,-881.38C649.96,-881.38 728,-881.38 728,-881.38 728,-881.38 728,-856.65 728,-856.65"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="730.1,-856.65 728,-850.65 725.9,-856.65 730.1,-856.65"/>
</g>
<!-- src/parse/parser&#45;helpers.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge26" class="edge">
<title>src/parse/parser&#45;helpers.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M770.79,-841.38C803.21,-841.38 842,-841.38 842,-841.38 842,-841.38 842,-662.47 842,-662.47"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="844.1,-662.47 842,-656.47 839.9,-662.47 844.1,-662.47"/>
</g>
<!-- src/render/dot/attributebuilder.js -->
<g id="node23" class="node">
<title>src/render/dot/attributebuilder.js</title>
<g id="a_node23"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/attributebuilder.js" xlink:title="attributebuilder.js">
<path fill="#ccccff" stroke="black" d="M921,-368.38C921,-368.38 846,-368.38 846,-368.38 843,-368.38 840,-365.38 840,-362.38 840,-362.38 840,-356.38 840,-356.38 840,-353.38 843,-350.38 846,-350.38 846,-350.38 921,-350.38 921,-350.38 924,-350.38 927,-353.38 927,-356.38 927,-356.38 927,-362.38 927,-362.38 927,-365.38 924,-368.38 921,-368.38"/>
<text text-anchor="middle" x="883.5" y="-357.18" font-family="Helvetica,sans-Serif" font-size="9.00">attributebuilder.js</text>
</a>
</g>
</g>
<!-- src/render/dot/counter.js -->
<g id="node24" class="node">
<title>src/render/dot/counter.js</title>
<g id="a_node24"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/counter.js" xlink:title="counter.js">
<path fill="#ccccff" stroke="black" d="M905.5,-398.38C905.5,-398.38 861.5,-398.38 861.5,-398.38 858.5,-398.38 855.5,-395.38 855.5,-392.38 855.5,-392.38 855.5,-386.38 855.5,-386.38 855.5,-383.38 858.5,-380.38 861.5,-380.38 861.5,-380.38 905.5,-380.38 905.5,-380.38 908.5,-380.38 911.5,-383.38 911.5,-386.38 911.5,-386.38 911.5,-392.38 911.5,-392.38 911.5,-395.38 908.5,-398.38 905.5,-398.38"/>
<text text-anchor="middle" x="883.5" y="-387.18" font-family="Helvetica,sans-Serif" font-size="9.00">counter.js</text>
</a>
</g>
</g>
<!-- src/render/dot/dot.states.template.js -->
<g id="node25" class="node">
<title>src/render/dot/dot.states.template.js</title>
<g id="a_node25"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/dot.states.template.js" xlink:title="dot.states.template.js">
<polygon fill="#ccccff" stroke="black" points="934.5,-428.38 832.5,-428.38 832.5,-410.38 934.5,-410.38 934.5,-428.38"/>
<text text-anchor="middle" x="883.5" y="-417.18" font-family="Helvetica,sans-Serif" font-size="9.00">dot.states.template.js</text>
</a>
</g>
</g>
<!-- src/render/dot/dot.template.js -->
<g id="node26" class="node">
<title>src/render/dot/dot.template.js</title>
<g id="a_node26"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/dot.template.js" xlink:title="dot.template.js">
<polygon fill="#ccccff" stroke="black" points="921.5,-458.38 845.5,-458.38 845.5,-440.38 921.5,-440.38 921.5,-458.38"/>
<text text-anchor="middle" x="883.5" y="-447.18" font-family="Helvetica,sans-Serif" font-size="9.00">dot.template.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/options.js -->
<g id="edge31" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M754.53,-438.38C774.78,-438.38 799,-438.38 799,-438.38 799,-438.38 799,-670.62 799,-670.62 799,-670.62 849.36,-670.62 849.36,-670.62"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="849.36,-672.73 855.36,-670.62 849.36,-668.53 849.36,-672.73"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge32" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M754.52,-436.38C777.22,-436.38 806,-436.38 806,-436.38 806,-436.38 806,-647.38 806,-647.38 806,-647.38 821.18,-647.38 821.18,-647.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="821.18,-649.48 827.18,-647.38 821.18,-645.28 821.18,-649.48"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/attributebuilder.js -->
<g id="edge33" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/attributebuilder.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M728,-425.18C728,-405.15 728,-359.38 728,-359.38 728,-359.38 833.77,-359.38 833.77,-359.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="833.77,-361.48 839.77,-359.38 833.77,-357.28 833.77,-361.48"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/counter.js -->
<g id="edge34" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/counter.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M741,-425.27C741,-412.12 741,-389.38 741,-389.38 741,-389.38 849.35,-389.38 849.35,-389.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="849.35,-391.48 855.35,-389.38 849.35,-387.28 849.35,-391.48"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/dot.states.template.js -->
<g id="edge35" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/dot.states.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M754.53,-430.38C787.24,-430.38 838,-430.38 838,-430.38 838,-430.38 838,-430.2 838,-430.2"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="840.1,-434.66 838,-428.66 835.9,-434.66 840.1,-434.66"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/dot.template.js -->
<g id="edge36" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/dot.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M728,-443.4C728,-447.25 728,-450.88 728,-450.88 728,-450.88 839.46,-450.88 839.46,-450.88"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="839.46,-452.98 845.46,-450.88 839.46,-448.78 839.46,-452.98"/>
</g>
<!-- src/render/dot/state&#45;transformers.js -->
<g id="node28" class="node">
<title>src/render/dot/state&#45;transformers.js</title>
<g id="a_node28"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/state-transformers.js" xlink:title="state&#45;transformers.js">
<path fill="#ccccff" stroke="black" d="M927,-488.38C927,-488.38 840,-488.38 840,-488.38 837,-488.38 834,-485.38 834,-482.38 834,-482.38 834,-476.38 834,-476.38 834,-473.38 837,-470.38 840,-470.38 840,-470.38 927,-470.38 927,-470.38 930,-470.38 933,-473.38 933,-476.38 933,-476.38 933,-482.38 933,-482.38 933,-485.38 930,-488.38 927,-488.38"/>
<text text-anchor="middle" x="883.5" y="-477.18" font-family="Helvetica,sans-Serif" font-size="9.00">state&#45;transformers.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/state&#45;transformers.js -->
<g id="edge37" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/state&#45;transformers.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M754.63,-434.38C788.49,-434.38 842,-434.38 842,-434.38 842,-434.38 842,-464.27 842,-464.27"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="839.9,-464.27 842,-470.27 844.1,-464.27 839.9,-464.27"/>
</g>
<!-- src/render/dot/transition&#45;transformers.js -->
<g id="node29" class="node">
<title>src/render/dot/transition&#45;transformers.js</title>
<g id="a_node29"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/transition-transformers.js" xlink:title="transition&#45;transformers.js">
<path fill="#ccccff" stroke="black" d="M936,-338.38C936,-338.38 831,-338.38 831,-338.38 828,-338.38 825,-335.38 825,-332.38 825,-332.38 825,-326.38 825,-326.38 825,-323.38 828,-320.38 831,-320.38 831,-320.38 936,-320.38 936,-320.38 939,-320.38 942,-323.38 942,-326.38 942,-326.38 942,-332.38 942,-332.38 942,-335.38 939,-338.38 936,-338.38"/>
<text text-anchor="middle" x="883.5" y="-327.18" font-family="Helvetica,sans-Serif" font-size="9.00">transition&#45;transformers.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/transition&#45;transformers.js -->
<g id="edge38" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/transition&#45;transformers.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M714,-425.06C714,-399.36 714,-329.38 714,-329.38 714,-329.38 818.69,-329.38 818.69,-329.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="818.69,-331.48 824.69,-329.38 818.69,-327.28 818.69,-331.48"/>
</g>
<!-- src/render/dot/utl.js -->
<g id="node30" class="node">
<title>src/render/dot/utl.js</title>
<g id="a_node30"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/utl.js" xlink:title="utl.js">
<path fill="#ccccff" stroke="black" d="M1031,-338.38C1031,-338.38 989,-338.38 989,-338.38 986,-338.38 983,-335.38 983,-332.38 983,-332.38 983,-326.38 983,-326.38 983,-323.38 986,-320.38 989,-320.38 989,-320.38 1031,-320.38 1031,-320.38 1034,-320.38 1037,-323.38 1037,-326.38 1037,-326.38 1037,-332.38 1037,-332.38 1037,-335.38 1034,-338.38 1031,-338.38"/>
<text text-anchor="middle" x="1010" y="-327.18" font-family="Helvetica,sans-Serif" font-size="9.00">utl.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/utl.js -->
<g id="edge39" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/utl.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M754.72,-432.38C823.9,-432.38 1001,-432.38 1001,-432.38 1001,-432.38 1001,-344.52 1001,-344.52"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1003.1,-344.52 1001,-338.52 998.9,-344.52 1003.1,-344.52"/>
</g>
<!-- src/render/dot/state&#45;transformers.js&#45;&gt;src/render/dot/utl.js -->
<g id="edge40" class="edge">
<title>src/render/dot/state&#45;transformers.js&#45;&gt;src/render/dot/utl.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M933.19,-479.38C971.86,-479.38 1019,-479.38 1019,-479.38 1019,-479.38 1019,-344.76 1019,-344.76"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1021.1,-344.76 1019,-338.76 1016.9,-344.76 1021.1,-344.76"/>
</g>
<!-- src/render/dot/transition&#45;transformers.js&#45;&gt;src/render/dot/utl.js -->
<g id="edge41" class="edge">
<title>src/render/dot/transition&#45;transformers.js&#45;&gt;src/render/dot/utl.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M942.31,-329.38C942.31,-329.38 976.91,-329.38 976.91,-329.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="976.91,-331.48 982.91,-329.38 976.91,-327.28 976.91,-331.48"/>
</g>
<!-- src/render/scjson/index.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge53" class="edge">
<title>src/render/scjson/index.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M754.55,-198.38C779.6,-198.38 813,-198.38 813,-198.38 813,-198.38 813,-642.88 813,-642.88 813,-642.88 821.27,-642.88 821.27,-642.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="821.27,-644.98 827.27,-642.88 821.27,-640.78 821.27,-644.98"/>
</g>
<!-- src/render/scjson/make&#45;valid&#45;event&#45;names.js -->
<g id="node36" class="node">
<title>src/render/scjson/make&#45;valid&#45;event&#45;names.js</title>
<g id="a_node36"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scjson/make-valid-event-names.js" xlink:title="make&#45;valid&#45;event&#45;names.js">
<path fill="#ccccff" stroke="black" d="M941,-204.38C941,-204.38 826,-204.38 826,-204.38 823,-204.38 820,-201.38 820,-198.38 820,-198.38 820,-192.38 820,-192.38 820,-189.38 823,-186.38 826,-186.38 826,-186.38 941,-186.38 941,-186.38 944,-186.38 947,-189.38 947,-192.38 947,-192.38 947,-198.38 947,-198.38 947,-201.38 944,-204.38 941,-204.38"/>
<text text-anchor="middle" x="883.5" y="-193.18" font-family="Helvetica,sans-Serif" font-size="9.00">make&#45;valid&#45;event&#45;names.js</text>
</a>
</g>
</g>
<!-- src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;event&#45;names.js -->
<g id="edge54" class="edge">
<title>src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;event&#45;names.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M754.67,-192.38C754.67,-192.38 813.73,-192.38 813.73,-192.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="813.73,-194.48 819.73,-192.38 813.73,-190.28 813.73,-194.48"/>
</g>
<!-- src/render/scjson/make&#45;valid&#45;xml&#45;name.js -->
<g id="node37" class="node">
<title>src/render/scjson/make&#45;valid&#45;xml&#45;name.js</title>
<g id="a_node37"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scjson/make-valid-xml-name.js" xlink:title="make&#45;valid&#45;xml&#45;name.js">
<path fill="#ccccff" stroke="black" d="M934.5,-174.38C934.5,-174.38 832.5,-174.38 832.5,-174.38 829.5,-174.38 826.5,-171.38 826.5,-168.38 826.5,-168.38 826.5,-162.38 826.5,-162.38 826.5,-159.38 829.5,-156.38 832.5,-156.38 832.5,-156.38 934.5,-156.38 934.5,-156.38 937.5,-156.38 940.5,-159.38 940.5,-162.38 940.5,-162.38 940.5,-168.38 940.5,-168.38 940.5,-171.38 937.5,-174.38 934.5,-174.38"/>
<text text-anchor="middle" x="883.5" y="-163.18" font-family="Helvetica,sans-Serif" font-size="9.00">make&#45;valid&#45;xml&#45;name.js</text>
</a>
</g>
</g>
<!-- src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;xml&#45;name.js -->
<g id="edge55" class="edge">
<title>src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;xml&#45;name.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M728,-186.21C728,-177.39 728,-165.38 728,-165.38 728,-165.38 820.48,-165.38 820.48,-165.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="820.48,-167.48 826.48,-165.38 820.48,-163.28 820.48,-167.48"/>
</g>
<!-- src/render/scxml/index.js&#45;&gt;src/render/scjson/index.js -->
<g id="edge56" class="edge">
<title>src/render/scxml/index.js&#45;&gt;src/render/scjson/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M561,-114.52C561,-136.58 561,-190.88 561,-190.88 561,-190.88 694.38,-190.88 694.38,-190.88"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="694.38,-192.98 700.38,-190.88 694.38,-188.78 694.38,-192.98"/>
</g>
<!-- src/render/scxml/scxml.states.template.js -->
<g id="node38" class="node">
<title>src/render/scxml/scxml.states.template.js</title>
<g id="a_node38"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scxml/scxml.states.template.js" xlink:title="scxml.states.template.js">
<polygon fill="#ccccff" stroke="black" points="784,-84.38 671,-84.38 671,-66.38 784,-66.38 784,-84.38"/>
<text text-anchor="middle" x="727.5" y="-73.17" font-family="Helvetica,sans-Serif" font-size="9.00">scxml.states.template.js</text>
</a>
</g>
</g>
<!-- src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.states.template.js -->
<g id="edge57" class="edge">
<title>src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.states.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M588,-102.38C623.11,-102.38 680,-102.38 680,-102.38 680,-102.38 680,-90.52 680,-90.52"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="682.1,-90.52 680,-84.52 677.9,-90.52 682.1,-90.52"/>
</g>
<!-- src/render/scxml/scxml.template.js -->
<g id="node39" class="node">
<title>src/render/scxml/scxml.template.js</title>
<g id="a_node39"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scxml/scxml.template.js" xlink:title="scxml.template.js">
<polygon fill="#ccccff" stroke="black" points="770.5,-114.38 684.5,-114.38 684.5,-96.38 770.5,-96.38 770.5,-114.38"/>
<text text-anchor="middle" x="727.5" y="-103.17" font-family="Helvetica,sans-Serif" font-size="9.00">scxml.template.js</text>
</a>
</g>
</g>
<!-- src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.template.js -->
<g id="edge58" class="edge">
<title>src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M588.12,-108.38C588.12,-108.38 678.45,-108.38 678.45,-108.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="678.45,-110.48 684.45,-108.38 678.45,-106.28 678.45,-110.48"/>
</g>
<!-- src/render/smcat/smcat.template.js -->
<g id="node40" class="node">
<title>src/render/smcat/smcat.template.js</title>
<g id="a_node40"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/smcat/smcat.template.js" xlink:title="smcat.template.js">
<polygon fill="#ccccff" stroke="black" points="771,-264.38 684,-264.38 684,-246.38 771,-246.38 771,-264.38"/>
<text text-anchor="middle" x="727.5" y="-253.18" font-family="Helvetica,sans-Serif" font-size="9.00">smcat.template.js</text>
</a>
</g>
</g>
<!-- src/render/smcat/index.js&#45;&gt;src/render/smcat/smcat.template.js -->
<g id="edge59" class="edge">
<title>src/render/smcat/index.js&#45;&gt;src/render/smcat/smcat.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M588.12,-255.38C588.12,-255.38 677.8,-255.38 677.8,-255.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="677.8,-257.48 683.8,-255.38 677.8,-253.28 677.8,-257.48"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/options.js -->
<g id="edge60" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M623,-578.39C623,-603.96 623,-675.12 623,-675.12 623,-675.12 849.13,-675.12 849.13,-675.12"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="849.13,-677.23 855.13,-675.12 849.13,-673.03 849.13,-677.23"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/dot/index.js -->
<g id="edge61" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M622,-560.05C622,-530.34 622,-439.77 622,-439.77 622,-439.77 694.33,-439.77 694.33,-439.77"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="694.33,-441.88 700.33,-439.77 694.33,-437.68 694.33,-441.88"/>
</g>
<!-- src/render/vector/dot&#45;to&#45;vector&#45;native.js -->
<g id="node41" class="node">
<title>src/render/vector/dot&#45;to&#45;vector&#45;native.js</title>
<g id="a_node41"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/vector/dot-to-vector-native.js" xlink:title="dot&#45;to&#45;vector&#45;native.js">
<path fill="#ccccff" stroke="black" d="M773.5,-578.38C773.5,-578.38 681.5,-578.38 681.5,-578.38 678.5,-578.38 675.5,-575.38 675.5,-572.38 675.5,-572.38 675.5,-566.38 675.5,-566.38 675.5,-563.38 678.5,-560.38 681.5,-560.38 681.5,-560.38 773.5,-560.38 773.5,-560.38 776.5,-560.38 779.5,-563.38 779.5,-566.38 779.5,-566.38 779.5,-572.38 779.5,-572.38 779.5,-575.38 776.5,-578.38 773.5,-578.38"/>
<text text-anchor="middle" x="727.5" y="-567.17" font-family="Helvetica,sans-Serif" font-size="9.00">dot&#45;to&#45;vector&#45;native.js</text>
</a>
</g>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/vector/dot&#45;to&#45;vector&#45;native.js -->
<g id="edge62" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/vector/dot&#45;to&#45;vector&#45;native.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M635.48,-569.38C635.48,-569.38 669.5,-569.38 669.5,-569.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="669.5,-571.48 675.5,-569.38 669.5,-567.28 669.5,-571.48"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/options.js -->
<g id="edge63" class="edge">
<title>src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M608.02,-539.38C675.57,-539.38 792,-539.38 792,-539.38 792,-539.38 792,-672.88 792,-672.88 792,-672.88 849.05,-672.88 849.05,-672.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="849.05,-674.98 855.05,-672.88 849.05,-670.78 849.05,-674.98"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/render/dot/index.js -->
<g id="edge64" class="edge">
<title>src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M598,-530.22C598,-504.96 598,-436.18 598,-436.18 598,-436.18 694.35,-436.18 694.35,-436.18"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="694.35,-438.28 700.35,-436.18 694.35,-434.08 694.35,-438.28"/>
</g>
</g>
</svg>
<script>document.body.onmouseover = getHighlightHandler();

function getHighlightHandler() {
  /** @type {string} */
  var currentHighlightedTitle;

  /** @type {NodeListOf<SVGGElement>} */
  var nodes = document.querySelectorAll(".node");
  /** @type {NodeListOf<SVGGElement>} */
  var edges = document.querySelectorAll(".edge");
  var title2ElementMap = new Title2ElementMap(edges, nodes);

  /** @param {MouseEvent} pMouseEvent */
  return function highlightHandler(pMouseEvent) {
    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (!(currentHighlightedTitle === closestTitleText)) {
      title2ElementMap.get(currentHighlightedTitle).forEach(removeHighlight);
      title2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}

/**
 *
 * @param {SVGGelement[]} pEdges
 * @param {SVGGElement[]} pNodes
 * @return {{get: (pTitleText:string) => SVGGElement[]}}
 */
function Title2ElementMap(pEdges, pNodes) {
  /* {{[key: string]: SVGGElement[]}} */
  var elementMap = buildMap(pEdges, pNodes);

  /**
   * @param {NodeListOf<SVGGElement>} pEdges
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement[]}}
   */
  function buildMap(pEdges, pNodes) {
    var title2NodeMap = buildTitle2NodeMap(pNodes);

    return nodeListToArray(pEdges).reduce(addEdgeToMap(title2NodeMap), {});
  }
  /**
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement}}
   */
  function buildTitle2NodeMap(pNodes) {
    return nodeListToArray(pNodes).reduce(addNodeToMap, {});
  }

  function addNodeToMap(pMap, pNode) {
    var titleText = getTitleText(pNode);

    if (titleText) {
      pMap[titleText] = pNode;
    }
    return pMap;
  }

  function addEdgeToMap(pNodeMap) {
    return function (pEdgeMap, pEdge) {
      /** @type {string} */
      var titleText = getTitleText(pEdge);

      if (titleText) {
        var edge = pryEdgeFromTitle(titleText);

        pEdgeMap[titleText] = [pNodeMap[edge.from], pNodeMap[edge.to]];
        (pEdgeMap[edge.from] || (pEdgeMap[edge.from] = [])).push(pEdge);
        (pEdgeMap[edge.to] || (pEdgeMap[edge.to] = [])).push(pEdge);
      }
      return pEdgeMap;
    };
  }

  /**
   *
   * @param {string} pString
   * @return {{from?: string; to?:string;}}
   */
  function pryEdgeFromTitle(pString) {
    var nodeNames = pString.split(/\s*->\s*/);

    return {
      from: nodeNames.shift(),
      to: nodeNames.shift(),
    };
  }
  /**
   *
   * @param {string} pTitleText
   * @return {SVGGElement[]}
   */
  function get(pTitleText) {
    return (pTitleText && elementMap[pTitleText]) || [];
  }
  return {
    get: get,
  };
}

/**
 * @param {SVGGElement} pGElement
 * @return {string?}
 */
function getTitleText(pGElement) {
  /** @type {SVGTitleElement} */
  var title = pGElement && pGElement.querySelector("title");
  /** @type {string} */
  var titleText = title && title.textContent;

  if (titleText) {
    titleText = titleText.trim();
  }
  return titleText;
}

/**
 * @param {NodeListOf<Element>} pNodeList
 * @return {Element[]}
 */
function nodeListToArray(pNodeList) {
  var lReturnValue = [];

  pNodeList.forEach(function (pElement) {
    lReturnValue.push(pElement);
  });

  return lReturnValue;
}

/**
 * @param {SVGGElement} pGElement
 */
function removeHighlight(pGElement) {
  if (pGElement && pGElement.classList) {
    pGElement.classList.remove("current");
  }
}

/**
 * @param {SVGGElement} pGroup
 */
function addHighlight(pGroup) {
  if (pGroup && pGroup.classList) {
    pGroup.classList.add("current");
  }
}
</script>  </body>
</html>
